package com.sixth.dao;

import com.sixth.entity.BranchAndGoods;
import com.sixth.entity.Limit;
import com.sixth.entity.Outlibrary;
import com.sixth.entity.OutlibraryGoods;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface OutlibraryDao {
    int deleteByPrimaryKey(Integer cid);

    int insert(Outlibrary record);

    int insertSelective(Outlibrary record);

    Outlibrary selectByPrimaryKey(Integer cid);

    int updateByPrimaryKeySelective(Outlibrary record);

    int updateByPrimaryKey(Outlibrary record);

    //批量出库操作后，往出库信息表内新增一条出库信息
    Integer addBatchOutLibrary(@Param("outLibrary") Outlibrary outlibrary);

    //出库成功后，往详情表内增一条商品详情数据
    Integer addOutLibraryGoods(@Param("outLibraryGoods") OutlibraryGoods outlibraryGoods);

    //平调出库操作后，往平调出库信息表内新增一条出库信息
    Integer addTransferOutLibrary(@Param("outLibrary") Outlibrary outLibrary, @Param("branchid")Integer branchid);

    //平调出库成功后，往平调详情表内增一条商品详情数据
    Integer addOutLibraryTransferGoods(@Param("outLibraryGoods") OutlibraryGoods outLibraryGoods);

    //零售出库
    Integer retailOutLibrary(@Param("branchid") Integer branchid, @Param("goodsid") Integer goodsid, @Param("counts") Integer counts, @Param("chuKuNum") Integer chuKuNum);

    //零售出库成功后，往出库信息表内新增一条出库信息
    Integer addOutLibrary(@Param("outLibrary") Outlibrary outLibrary);

    //查询全部的入库信息
    List<Map> getOutInformation(@Param("limit") Limit limit, @Param("branchid") Integer branchid);

    //查询入库条数
    Integer getOutInformationCount(@Param("branchid") Integer branchid);
    Integer getOutInformationCount1(@Param("branchid") Integer branchid,@Param("roleid")Integer roleid,@Param("bid")Integer bid);

    List<Map> outLibraryDetails(Integer cid);

    //批量出库审核通过后，把审核人和审核时间修改进本条出库信息里面
    Integer updateOutLibrary(@Param("cid") Integer cid, @Param("examstaffid") Integer examstaffid, @Param("examtime") Date examtime);

    //根据出库编号获取到出库详情信息
    List<OutlibraryGoods> getOutLibraryByCid(@Param("cid") Integer cid);

    //根据出库商品的分店id和商品id来查询该商品有多少库存
    Integer getGoodsCountByBG(@Param("branchid") Integer branchid, @Param("goodsid") Integer goodsid);

    //批量出库
    Integer batchOutLibrary(@Param("branchid") Integer branchid, @Param("goodsid") Integer goodsid, /*@Param("count") Integer count,*/ @Param("chuKuNum") Integer chuKuNum);

    //审核驳回后，把审核人和审核时间和驳回理由，修改进本条出库信息里面
    Integer updateExReject(@Param("cid") Integer cid, @Param("examstaffid") Integer examstaffid, @Param("examtime") Date examtime, @Param("msg") String msg);

    //显示添加出库页面
    List<Map> getOutInformation1(@Param("limit") Limit limit, @Param("branchid") Integer branchid,@Param("roleid")Integer roleid,@Param("bid")Integer bid);

    //查询平调信息表全部信息
    List<Map> getAllTransfer(@Param("limit") Limit limit, @Param("branchid") Integer branchid);

    //查询平调信息表条数
    Integer getAllTransferCount(@Param("branchid") Integer branchid);

    //根据平调出库编号查询该出库商品的详情信息
    List<Map> outLibraryTransferDetails(Integer cid);

    //平调出库审核通过后，把审核人和审核时间修改进本条出库信息里面
    Integer updateTransferOutLibrary(@Param("cid") Integer cid, @Param("examstaffid") Integer examstaffid, @Param("examtime") Date examtime);

    //根据平调出库编号获取到平调出库详情信息
    List<OutlibraryGoods> getOutLibraryTransferByCid(@Param("cid") Integer cid);

    //平调通过后，查询该分店有无该商品，
    BranchAndGoods getBranchAndGoods(@Param("goodsid") Integer goodsid, @Param("branchid") Integer branchid);

    //平调审核通过后原始店铺减，平调店铺加
    Integer transferOutLibrary(@Param("newbranchid") Integer newbranchid, @Param("goodsid") Integer goodsid, @Param("chuKuNum") Integer chuKuNum);

    //没有的话直接加到这个分店里面
    Integer addBranchAndGoods(@Param("goodsid") Integer goodsid, @Param("branchid") Integer branchid, @Param("counts") Integer num);

    //审核驳回后，把审核人和审核时间和驳回理由，修改进本条出库信息里面
    Integer updateTransferExReject(@Param("cid") Integer cid, @Param("examstaffid") Integer examstaffid, @Param("examtime") Date examtime, @Param("msg") String msg);
    //查询平调信息表全部信息
    List<Map> getAllTransfer1(@Param("limit") Limit limit, @Param("branchid") Integer branchid,@Param("bid")Integer bid,@Param("roleid")Integer roleid);

    //查询平调信息表条数
    Integer getAllTransferCount1(@Param("branchid") Integer branchid,@Param("bid")Integer bid,@Param("roleid")Integer roleid);

    int insertByLs(@Param("cid") Integer cid, @Param("branchid") Integer branchid, @Param("outmethod") Integer outmethod, @Param("examstate") Integer examstate);

}